package com.wectrls.common.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @author chenjian
 * @Package
 * @Description:
 * @date 2019/7/1 8:55
 */
@Slf4j
public class FileUtils {

    /**
     * 获取文件后缀
     *
     * @param fileName
     * @return
     */
    public static String getSuffix(String fileName) {
        return fileName.substring(fileName.lastIndexOf("."));
    }

    /**
     * 生成新的文件名
     *
     * @param fileOriginName 源文件名
     * @return
     */
    public static String getFileName(String fileOriginName) {
        String fileName = UUIDUtils.uuid_32() + FileUtils.getSuffix(fileOriginName);
        return fileName;
    }

    /**
     * @param file     文件
     * @param path     文件存放路径
     * @param fileName 原文件名
     * @return
     */
    public static String upload(MultipartFile file, String path, String fileName) {
        File dir = new File(path);
        if (dir.exists()||!dir.isDirectory()){
            boolean md = dir.mkdirs();
            if (md) {
                log.debug("创建图片文件存储文件夹");
            } else {
                log.warn("警告！创建图片文件存储文件夹异常");
            }
        }
        // 生成新的文件名
        String realPath = path + "/" + getFileName(fileName);
        //使用原文件名
        // String realPath = path + "/" + fileName;
        File dest = new File(realPath);
        //判断文件父目录是否存在
        if (!dest.getParentFile().exists()) {
            boolean md = dest.getParentFile().mkdir();
            if (md) {
                log.debug("创建文件夹成功");
            } else {
                log.warn("警告！创建文件夹异常");
            }
        }
        try {
            //保存文件
            file.transferTo(dest);
            return realPath;
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
